/**
 *  生成 token 和解密token的方法
 */
const jwt = require('jsonwebtoken')

// 加盐: 具体来说就是在原有材料（用户自定义密码）中加入其它成分（一般是用户自有且不变的因素），以此来增加系统密码复杂度
const SECRET = "abcc"
// 校验token是否合法
const verifyToken = (token) => {
  return new Promise((resolve, rejected) => {
    jwt.verify(token, SECRET, (error, payload) => {
      if (error) {
        throw new Error('token 不合法')
      } else {
        resolve(payload)
      }
    })
  })
}

// 将当前用户信息传递进去 生成 token
const generatorToken = (userInfo) => {
  return jwt.sign(
    {...userInfo},
    SECRET, // 加盐
    {
      expiresIn: '7d' // 过期时间
    }
  )
}

module.exports = {
  verifyToken,
  generatorToken,
}
